module single_bit_full_adder (
	input a, b, c,
	output s, cout
);

	// immediate wire
	wire[2:0] cim;

	// gate connection
	xor(s, a, b, c);
	and(cim[0], a, b);
	and(cim[1], b, c);
	and(cim[2], a, c);
	or(cout, cim[0], cim[1], cim[2]);

endmodule
